package org.csu.petserver.service;

import org.csu.petserver.domain.Client;
import org.csu.petserver.domain.Item;
import org.csu.petserver.domain.LineItem;
import org.csu.petserver.domain.Order;
import org.springframework.stereotype.Repository;

import java.math.BigDecimal;
import java.text.ParseException;
import java.util.Date;
import java.util.List;

@Repository
public interface OrderInfo {
    public List<LineItem> getOrderSpecificInfo(Order order);
    public List<Item> getAllItemNotInOrder(Order order);//获取订单中没有的item,该方法会在添加lineItem时候用到
    public boolean deleteOrder(Order order);
    public List<Order> searchOrderOfAllClient(String keyword);
    public List<Order> searchExactOrderOfCertainClient(Client client, String keyword);
    public List<Order> sortByDate(List<Order> orders);
    public List<Order> sortByPrice(List<Order> orders);
    public boolean updateOrder(Order order);
    //这个方法只修改用户的地址
    //我们的后台修改订单总共需要修改的信息包括---
    //地址、订单中的物品及数量、总价格（这个在调用的方法中会自动修改）
    public boolean updateOrderItem(List<LineItem> lineItems, Order order);
    //这个函数只考虑更改数量，注意修改的数量不能小于1，
    //这个方法通常与LineItemInfo中的deleteLineItem联合使用，从而删除某一个lineItem
    public boolean shipping(Order order);//订单发货
    public List<Order> getAllOrder();
    public Order selectOrderById(String orderId);
    public List<Order> selectOrderNotShipping(List<Order> orders);//获取所有未发货的订单
    public List<Order> selectOrderShipping(List<Order> orders);//获取所有已发货的订单
    public BigDecimal getTodayBanking(String date) throws ParseException;//获得当日流水
    public List<Order> getOrderByDate(String date) throws ParseException;//获得当日订单
}
